perm filename CH3.TOC[CLS,LSP] blob sn#854209 filedate 1988-03-07 generic text, type T, neo UTF8
!9!!3--1
!0Common Lisp Object System Specification!!3--1
!13. Metaobject Protocol!!3--1
!9CONTENTS!!3--2
!2Terminology!!3--5
!2Introduction!!3--6
!2The Classes in the CLOS Kernel!!3--8
!3Lattice of Kernel Classes!!3--8
!3Instances of class, built-in-class and structure-class!!3--9
!3Instances of standard-class!!3--9
!4allocate-instance!!3--10
!4check-initargs!!3--10
!4default-initargs!!3--10
!4Initializing standard-class!!3--10
!4class-default-direct-superclasses!!3--12
!4Example of specializing class-default-direct-superclasses!!3--12
!4valid-superclass-p!!3--13
!4valid-class-option-p!!3--13
!4valid-slot-description-p!!3--13
!3Readers for Standard-class!!3--13
!4class-direct-superclasses!!3--13
!4class-direct-slots!!3--13
!4class-direct-options!!3--14
!4class-precedence-list!!3--14
!4class-finalized-p!!3--14
!4class-initialized-p!!3--14
!4class-prototype!!3--14
!4class-slots!!3--15
!4class-direct-slot-initargs!!3--15
!4class-all-slot-initargs!!3--15
!4class-direct-initargs!!3--15
!4class-all-initargs!!3--16
!4class-direct-initarg-defaults!!3--16
!4class-all-initarg-defaults!!3--16
!4class-direct-subclasses!!3--17
!4class-direct-methods!!3--17
!4class-direct-generic-functions!!3--17
!3Initializing standard-slot-description!!3--17
!3Readers for standard-slot-description!!3--18
!4slot-description-name!!3--18
!4slot-description-initform!!3--18
!4slot-description-initfunction!!3--18
!4slot-description-type!!3--18
!4slot-description-allocation!!3--19
!4slot-description-initargs!!3--19
!4slot-description-readers!!3--19
!4slot-description-writers!!3--19
!3Initialization for Methods!!3--19
!3Method Functions!!3--19
!4method-lambda!!3--20
!4method-function-p!!3--20
!4apply-method-lambda!!3--20
!3Readers for standard-method!!3--20
!4method-generic-function!!3--21
!4method-lambda-list!!3--21
!4method-specializers!!3--21
!4method-qualifiers!!3--21
!4method-function!!3--21
!3Initializing standard-accessor-methods!!3--21
!3Readers for standard-accessor-method!!3--22
!4method-applicable-class!!3--22
!4method-slot-name!!3--22
!4method-generic-function!!3--22
!4method-lambda-list!!3--22
!4method-specializers!!3--22
!4method-qualifiers!!3--22
!3Initializing Standard-generic-function!!3--22
!3Readers for Standard-generic-function!!3--23
!4generic-function-name!!3--23
!4generic-function-lambda-list!!3--24
!4generic-function-argument-precedence-order!!3--24
!4generic-function-method-class!!3--24
!4generic-function-declarations!!3--24
!4generic-function-method-combination!!3--24
!4generic-function-methods!!3--24
!4generic-function-initial-methods!!3--24
!4method-applicable-keywords!!3--25
!4add-method, remove-method, get-method!!3--25
!4add-method-on-specializer!!3--25
!4remove-method-on-specializer!!3--25
!3Initializing Method Combination Objects!!3--25
!3Readers for Method combination objects!!3--26
!4method-combination-name!!3--26
!4method-combination-options!!3--26
!4method-combination-order!!3--26
!4method-combination-operator!!3--27
!4method-combination-identity-with-one-argument!!3--27
!2Reinitialization and Updating Dependents!!3--28
!4reinitialize-instance for standard-object!!3--28
!4check-reinitargs!!3--28
!4update-dependents!!3--29
!4all-dependents!!3--29
!4add-dependent!!3--29
!4remove-dependent!!3--29
!4update-dependent generic function!!3--30
!4reinitialize-instance for standard-class!!3--30
!4add-direct-subclass!!3--30
!4remove-direct-subclass!!3--30
!4update-dependent for standard-class!!3--31
!4finalize-inheritance!!3--32
!4reinitialize-instance for slot-description!!3--32
!4reinitialize-instance for methods!!3--32
!4reinitialize-instance for method-combination objects!!3--32
!4reinitialize-instance for standard-generic-function!!3--33
!4generic-function-changed!!3--33
!2Expansions of the User Macros!!3--34
!3Expanding defclass forms!!3--34
!4add-named-class!!3--34
!4class-for-redefinition!!3--35
!3Expansion of defgeneric!!3--36
!4method-combination-object!!3--37
!3Expansion of defmethod!!3--37
!4add-named-method!!3--37
!3Expansion of define-method-combination!!3--38
!2The Slot Parsing Protocol!!3--42
!3slot-description-class!!3--42
!2compute-class-precedence-list!!3--43
!2The Slot Inheritance Protocol!!3--44
!4collect-slot-descriptions!!3--44
!4compute-effective-slot-description!!3--44
!4Example of specializing compute-effective-slot-description!!3--44
!2The Instance Structure Protocol!!3--46
!3Slot Level Instance Access!!3--46
!4slot-value-using-class!!3--46
!4slot-boundp-using-class!!3--47
!4slot-makunbound-using-class!!3--47
!4slot-exists-p-using-class!!3--47
!3Access-Key Instance Access!!3--48
!4compute-class-access-keys!!3--48
!4class-access-keys!!3--48
!4allocate-standard-instance!!3--49
!4standard-instance-access!!3--49
!3Optimized Symbolic Level Instance Access!!3--49
!2The Instance Access Optimization Protocol!!3--51
!2The Method Lookup Protocol!!3--53
!3Support Functions for Method Lookup!!3--54
!3Example of using the Method Lookup Protocol!!3--55